package com.csap.framework.apidoc.service;

import com.csap.framework.apidoc.CsapResourcesProvider;
import com.csap.framework.apidoc.DevtoolsClass;
import com.csap.framework.apidoc.config.ScannerPackageConfig;
import com.csap.framework.apidoc.model.CsapDocModel;
import com.csap.framework.apidoc.model.CsapDocModelController;
import com.csap.framework.util.map.CsapMap;
import com.csap.framework.validation.factory.ValidateFactory;
import com.google.common.collect.Lists;
import com.google.common.collect.Sets;
import org.springframework.core.DefaultParameterNameDiscoverer;
import org.springframework.core.ParameterNameDiscoverer;

import java.util.List;
import java.util.Map;
import java.util.Set;

/**
 * @author yangchengfu
 * @dataTime 2021年-05月-21日 13:57:00
 **/
public abstract class AbstractCsapDocService {
    /**
     * 开发工具模式下的自定义class
     */
    protected DevtoolsClass devtoolsClass;
    /**
     * 配置
     */
    protected ScannerPackageConfig packageConfig;
    /**
     * 多资源
     */
    protected CsapResourcesProvider resourcesProvider;

    public ValidateFactory validateFactory;
    /**
     * 默认分组
     */
    protected Set<String> group = Sets.newHashSet("default");
    /**
     * 默认版本
     */
    protected Set<String> version = Sets.newHashSet("default");
    /**
     * 全局的api
     */
    protected List<CsapDocModelController> globalApiList = Lists.newArrayList();

    /**
     * <p>
     * key：匹配方法
     * value 参数
     * <p/>
     * 全局请求参数
     */
    protected Map<String, List<CsapDocModel>> globalRequestParam = new CsapMap<>();

    protected final ParameterNameDiscoverer parameterNameDiscoverer = new DefaultParameterNameDiscoverer();
}
